/*
 * jquery数据表格插件
 */
(function($) {       
$.fn.MyDataGrid = function(options) {     
	var o=$(this);//获取当前调用插件的对象
    var defaults = {    //定义默认设置
    	url:"",//DataGrid数据加载项
    	dblclick:function(){
    	    alert("catch double click");
    	},
    	parseData:function(data){
    		alert("catch parseData click");
    	},
    	cols:0,
    	info:"#waiting",//数据加载时显示的正在加载信息
    	infoVPosition:"center",
    	infoHPosition:"middle",
    	enableClick:false,
    	background: '#CCC',//默认背景颜色
    	autoHide:false,//是否自动隐藏
    	showTime:3000,//自动显示时间单位毫秒
    	opacity:0.5//默认透明度
 	 };    
 // Extend our default options with those provided.    
    var opts = $.extend(defaults, options);//如果用户没有设置的参数则按指定的参数配置,否则按用户设置的参数进行
    function init(){
    	console.log("init");
    	load();
    	o.find(".dataTr").die('mouseover').live('mouseover',function(){//为什么要使用die?
    		//die是取消事件绑定的方法，如果重复绑定事件，则事件里的函数会执行多次，具体次数为绑定的次数N
    		//所以为保证事件方法只执行一次，在事件绑定前先取消原有的事件
			if($(this).attr("name")!='clicked'){
				$(this).css({"background":"#EEEEEE"});
			}
		}).die('mouseout').live('mouseout',function(){
			if($(this).attr("name")!='clicked'){
				$(this).css({"background":"#F9FBFC"});
			}
		}).die('click').live('click',function(){
			if($(this).attr("name")!='clicked'){
				$(this).attr("name","clicked").css({"background":"#D8F79D"});
				$(this).find(".rowno input").attr("checked","true");
				
				//如果所有的复选框均被选中则选中全选框
				var isCheckAll=true;
				$.each($(".rowno input"),function(){
					if(!$(this).attr("checked")){
						isCheckAll=false;
					}
				});
				if(isCheckAll){
					$("#checkAll").attr("checked","true");
				}
			}else{
				$(this).attr("name","").css({"background":"#F9FBFC"});
				$(this).find(".rowno input").removeAttr("checked");
				$("#checkAll").removeAttr("checked");
			}
			
		}).die('dblclick').live('dblclick',function(){
			return opts.dblclick();
		});
    	
    	$("#pageBar").find("a").die('click').live("click",function(){
    		opts.url="../"+$(this).attr("name");
    		init();
    	});
    	
    	$("#checkAll").die('click').live('click',function(){//全选按钮
			if($(this).attr("checked")){
				$.each($(".dataTr"),function(){
					if(!$(this).attr("name")){
						$(this).click();
					}
				});
			}else{
				$.each($(".dataTr"),function(){
					if($(this).attr("name")){
						$(this).click();
					}
				});
			}
			
		});
    }
    function parsePage(pageData,dataLength){
    	$("#pageBar").remove();
    	var counts=parseInt(pageData['counts']);
    	var currentpage=parseInt(pageData['currentpage']);
    	var countPage=parseInt(pageData['countPage']);
    	var currPath=pageData['currPath'];
    	var pagesize=parseInt(pageData['pagesize']);
    	var pageTr="<tr id='pageBar'>";
    	pageTr+="<td colspan='"+opts.cols+"'>";
		pageTr+="<div style='float:right;font-family:Tahoma'>";
    	if(currentpage==1){
    		pageTr+="第一页&nbsp;";
    		pageTr+="|&nbsp;上一页&nbsp;|&nbsp;";
    	}else if(currentpage>1){
    		pageTr+="<a href='javascript:void(0);' name='"+currPath+"&pageNum=1"+"'>第一页</a>&nbsp;";
    		pageTr+="|&nbsp;<a href='javascript:void(0);' name='"+currPath+"&pageNum="+(currentpage-1)+"'>上一页</a>&nbsp;";
    	}
    	if(currentpage<countPage){
    		pageTr+="<a href='javascript:void(0);' name='"+currPath+"&pageNum="+(currentpage+1)+"'>下一页</a>&nbsp;";
    		pageTr+="|&nbsp;<a href='javascript:void(0);' name='"+currPath+"&pageNum="+countPage+"'>最末页</a>&nbsp;&nbsp;转到第&nbsp;";
    	}else if(currentpage==countPage){
    		pageTr+="下一页&nbsp;|&nbsp;";
    		pageTr+="最末页&nbsp;&nbsp;转到第&nbsp;";
    	}
    	pageTr+="<input id='pageBar_index' type='text' class='inputText' style='width:40px'>&nbsp;页&nbsp;&nbsp;";
    	pageTr+="<input id='jumpBtn' type='button' onclick='' class='inputButton' value='跳转'>";
    	pageTr+="</div>";
    	pageTr+="<div style='float:left;font-family:Tahoma'>共 "+counts+" 条记录，每页 "+pagesize+" 条，当前第 "+currentpage+" / "+countPage+" 页，有"+dataLength+" 条记录</div>";
    	pageTr+="</td>";
    	pageTr+="</tr>";
    	$(pageTr).appendTo(o.find("tbody"));
    	$("#pageBar_index").die('keyup').live('keyup',function(){
    		var textval=$(this).val().replace(/\D/g,'');
    		if(textval>countPage){
    			textval=countPage;
    		}
    		$(this).val(textval);
    	});
    	$("#jumpBtn").die('click').live('click',function(){
    		var path="../"+currPath+"&pageNum="+($("#pageBar_index").val()==''?1:$("#pageBar_index").val());
    		console.log(path);
    		opts.url=path;
    		init();
    	});
    }
    
    function load(){
    	$.ajax({
    		type : "GET",
    		url : opts.url,
    		dataType : "json",
    		success : function(data) {
    			opts.parseData(data['dataList']);
    			parsePage(data['page'],data['dataList'].length);
    		},
    		error : function() {
    			alert("获取数据出错！");
    		}
    	});
    }
   
    init();
};     
})(jQuery); 